package com.learn.javase.chapter18.reflect.proxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

//目标对象
public class MyInvocationHandler implements InvocationHandler {
    /**
     * 执行代理对象的所有方法时都会被替换成执行该方法（即调用真实的服务）
     * 对代理对象proxy调用method方法，方法参数为args。
     *
     * @param proxy  代表动态代理对象
     * @param method 代表正在执行的方法
     * @param args   代表执行代理对象方法时传入的实参
     * @return java.lang.Object
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("正在执行方法：" + method.getName());
        if (args != null) {
            for (Object object : args) {
                System.out.println("执行代理对象方法时传入的实参：" + object);
            }
        } else {
            System.out.println("该方法调用无实参！");
        }
        return null;
    }
}
